package squelette;

import javax.media.opengl.GLCanvas;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 
 * 3 boules chevelues (jellyfish-like !) :
 * - Une qui se déplace simplement en se cognant sur les bords.
 * - Une qui se déplace suivant une courbe de Bézier.
 * - Une qui tourne autour de la première.
 * 
 * Pour gérer plus simplement la gestion des poils pour cette dernière, et afin que ceux-ci prennent bien en compte
 * la rotation que la sphère à laquelle ils sont rattachés, j'ai choisi de ne pas utiliser
 * de rotation dans le graphe de scène, mais plutôt une translation que je calcule selon deux angles de rotation.
 * 
 * Les poils ne sont pas gérés au niveau du graph de scène, car cela me paraissait trop gourmand
 * en ressource. Ils sont donc gérés dans le node "SceneHairySphereNode". Lorsque l'on défini
 * une nouvelle position à la boule, sa vitesse est calculée en soustrayant sa nouvelle et
 * ancienne position, et est transmises aux masses de chaque poil.
 * 
 * Déplacement de la caméra par le clavier (ZQSD et RF) ou la souris (bouton gauche + mouvement).
 * 
 * 
 *
 */
public class JavaMain implements Runnable 
{
    static Thread displayT = new Thread(new JavaMain());
    static boolean bQuit = false;

    public static void main(String[] args) {
        displayT.start();
    }

    public void run() {
    	Frame frame = new Frame("Projet MAR");
        GLCanvas canvas = new GLCanvas();
        canvas.addGLEventListener(new JavaRenderer());
        frame.add(canvas);
        frame.setSize(640, 480);
        frame.setUndecorated(false);
        int size = frame.getExtendedState();
        //size |= Frame.MAXIMIZED_BOTH;
        frame.setExtendedState(size);

        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                bQuit = true;
                displayT.stop();
                System.exit(0);
            }
        });
        frame.setVisible(true);
        canvas.requestFocus();
        while( !bQuit ) {
            canvas.display();
        }
    }
}
